import requests
import json


class WeChatWorkSender:
    def __init__(self, corpid, corpsecret, agentid):
        """
        初始化企业微信发送器   单独发送消息和文件
        :param corpid: 企业ID（在企业微信管理后台获取）
        :param corpsecret: 应用Secret（在应用详情页获取）
        :param agentid: 应用ID
        """
        self.corpid = corpid
        self.corpsecret = corpsecret
        self.agentid = agentid
        self.access_token = self._get_access_token()

    def _get_access_token(self):
        """获取访问令牌"""
        url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={self.corpid}&corpsecret={self.corpsecret}"
        response = requests.get(url)
        result = json.loads(response.text)
        if result.get("errcode") != 0:
            raise Exception(f"获取token失败：{result.get('errmsg')}")
        return result.get("access_token")

    def send_text_message(self, userid, content):
        """
        发送文本消息
        :param userid: 接收消息的用户ID（多个用|分隔，@all表示全体成员）
        :param content: 消息内容
        """
        url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={self.access_token}"
        data = {
            "touser": userid,
            "msgtype": "text",
            "agentid": self.agentid,
            "text": {"content": content},
            "safe": 0  # 0表示普通消息，1表示保密消息
        }
        response = requests.post(url, data=json.dumps(data))
        result = json.loads(response.text)
        if result.get("errcode") == 0:
            print("消息发送成功")
            return True
        else:
            print(f"消息发送失败：{result.get('errmsg')}")
            return False


if __name__ == "__main__":
    # 配置企业微信参数（替换为实际值）
    CORPID = "your_corp_id"
    CORPSECRET = "your_corp_secret"
    AGENTID = 1000001  # 应用ID

    # 初始化发送器
    sender = WeChatWorkSender(CORPID, CORPSECRET, AGENTID)

    # 发送消息（用户ID为企业微信中的账号）
    sender.send_text_message("user1|user2", "这是企业微信API发送的消息")
    # 发送给所有人
    sender.send_text_message("@all", "全体成员请注意：这是一条通知")
